home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PC World 2007 February
/
PCWorld_2007-02_cd.bin
/
domacnost a kancelar
/
avedesk
/
AveDesk13.exe
/
Effects
/
Orbit.effectlet
< prev
next >
Wrap
Extensible Markup Language
|
2005-09-07
|
5KB
|
197 lines
<?xml version="1.0" encoding="UTF-8"?>
<effectlet>
<info>
<name>Orbit Effect Script</name>
<author>Dreadnaut</author>
<notes><![CDATA[ For bugs or anything else, contact me at dreadnaut@despammed.com ]]></notes>
<version>0.0.6</version>
</info>
<settings>
<param name="Debug" type="Boolean" defval="False"/>
</settings>
<preferences>
<preference name="HorizontalRadius" type="range" defval="100" min="0" max="1000">
Half-length of the ellipse horizontal axis
</preference>
<preference name="VerticalRadius" type="range" defval="100" min="0" max="1000">
Half-length of the ellipse vertical axis
</preference>
<preference name="RevolutionsPerDay" type="range" defval="1440" min="1" max="8640">
Number of orbits completed in a day:
1 - one revolution per day
24 - one revolution per hour
1440 - one revolution per minute
8640 - one revolution every 10 seconds
</preference>
<preference name="AngularResolution" type="range" defval="180" min="3" max="2880">
Number of step to complete a revolution - i.e. smoothness of the animation
</preference>
<preference name="StartPosition" type="range" defval="0" min="0" max="359">
The desklet will start from this angular position when loaded
</preference>
<preference name="xExtraPrecision" type="range" defval="10000" min="0" max="10000">
Extra setting for fine tuning of the revolution speed: 10000 means 100% of the RevolutionsPerDay speed.
e.g. 9649 and 1 revolution per day gives you a lunar day (24h 50m 30s)
</preference>
<preference name="option_RotateDesklet" type="range" defval="0" min="0" max="1">
Rotate the desklet while moving along its orbit. Will eat a lot of CPU :)
</preference>
</preferences>
<images>
</images>
<script engine="vbScript"><![CDATA[
Dim StartTop, StartLeft, StepPosition, StepDegree
Dim TickRate
Dim PrefChange
Dim RadConv
Dim newx,newy
'These routines are the optional ones called by the framework
Sub OnCreate()
'Init
StartTop = Desklet.top
StartLeft = Desklet.left
RadConv = (4 * Atn(1)) / 180
Reset()
'Default preferences
HorizontalRadius = 100
VerticalRadius = 100
RevolutionsPerDay = 1440
AngularResolution = 180
StartPosition = 0
xExtraPrecision = 10000
'And Reading overwrites them with some previous user changes
Preferences.ReadAll()
'StepPosition = StartPosition * 360 / AngularResolution
Evaluate()
Ticker.enabled = true
End Sub
Sub OnMouseOn()
if Ticker.Enabled = false Then Ticker.Enabled = true
End Sub
Sub OnMouseout()
End Sub
'Function OnBeforeDraw(IsMouseOn, IsSelected, IsPreview)
'End Function
'Function OnAfterDraw(IsMouseOn, IsSelected, IsPreview)
'End Function
Sub OnSave()
Preferences.SaveAll
End Sub
'Optional. Indicates a preference change
Function OnPreferenceChange(Preference, oldValue, newValue)
Reset()
PrefChange = true
Ticker.Interval = 500
Ticker.Enabled = true
End Function
Sub Reset()
Ticker.Enabled = false
Desklet.move StartLeft, StartTop
Desklet.rotation = 0
End Sub
Sub Evaluate()
TickRate = cint(86400000 / AngularResolution / RevolutionsPerDay / xExtraPrecision * 10000)
Ticker.Interval = TickRate
StepPosition = StartPosition * 360 / AngularResolution
EvaluatePosition()
PrefChange = false
End Sub
Sub EvaluatePosition()
StepDegree = StepPosition * 360 / AngularResolution
newx = StartLeft + cint(HorizontalRadius * cos(StepDegree * RadConv))
newy = StartTop + cint(VerticalRadius * sin(StepDegree * RadConv))
End Sub
'You can only have 1 Ticker per effectlet
'The OnTimer method is shielded against multiple entrance recursion
Sub OnTimer()
if PrefChange Then
Evaluate()
Else
EvaluatePosition()
End If
If option_RotateDesklet = 1 Then
Desklet.rotation = cint(StepDegree)
Desklet.Redraw()
End If
Desklet.Move newx, newy
if (StepPosition < AngularResolution - 1) Then
StepPosition = StepPosition + 1
Else
StepPosition = 0
End If
End Sub
'Optional calls that we don't need for this script:
'Sub OnSelect()
'End Sub
'Sub OnDeselect()
'End Sub
'Sub OnShow()
'End Sub
'Sub OnHide()
'End Sub
'Sub OnConfigure()
'the configuration dialog with default UI for
'XML preferences will be shown.
'An additional dialog designer is on its way. It will
'extend the available default preferences of type:
' - slider, checkbox, combobox (builtin, v. 1.1, free on form with v. 1.2)
' - textbox, file browser, favorites URL (builtin and free on form, v. 1.2)
' - Any ocx (external, only free on form, v. 1.2)
'End Sub
Sub OnStartMove()
Reset()
End Sub
Sub OnEndMove()
StartTop = Desklet.top
StartLeft = Desklet.left
EvaluatePosition()
Ticker.Interval = TickRate
Ticker.Enabled = true
End Sub
'Sub OnLeftClick()
'End Sub
'Sub OnRightClick()
'End Sub
Sub OnDestroy
Reset()
End Sub
]]></script>
</effectlet>